/**
 * 会议室管理模块配置文件
 * 该文件定义了会议室管理模块的相关配置，包括模块名称、API 路径、会议室接口定义、表格列配置、检索配置和添加配置。
 * @module meetingRoomsConfig
 */
export const moduleName = '会议室'
export const moduleApi = '/api/conferenceRoomManagement'

// 模块字段

export interface MeetingRoom {
  id: number //会议室的唯一标识符。
  applyId: number // applyId: 申请的唯一标识符。
  roomName: string // roomName: 会议室的名称。
  area: string // area: 会议室的面积。
  capacity: number // capacity: 会议室的容量（可容纳的人数）。
  equipment: string[] // equipment: 会议室内的设备。
  linkman: string // linkman: 联系人信息。
  positionDescription: string // positionDescription: 会议室的位置描述。
  reservationRule: string // reservationRule: 会议室的预订规则。
  description: string // description: 会议室的详细描述。
  isApproval: boolean // isApproval: 是否需要审批（例如，预订是否需要管理员审批）。
  openStatus: boolean // openStatus: 会议室的开放状态（例如，是否对外开放）。
}

const mockData: MeetingRoom[] = []

/**
 * 表格列配置
 * @param {string} label - 列的标题
 * @param {string} prop - 对应的数据字段
 * @param {string} component - 使用的组件类型 (input, select, date, imgUpload, dateRange, timeRange)
 * @param {string} minWidth - 最小宽度（可选）
 */
const tableColumns = ref<any>([
  { label: '会议室名称', prop: 'roomName', minWidth: null },
  { label: '面积', prop: 'area', minWidth: null },
  { label: '容量', prop: 'capacity', minWidth: null },
  { label: '联系人电话', prop: 'linkman', minWidth: null },
  { label: '位置描述', prop: 'positionDescription', minWidth: null },
  { label: '会议室描述', prop: 'description', minWidth: null },
  { label: '是否需要审批', prop: 'isApproval', minWidth: null },
  { label: '是否开放', prop: 'openStatus', minWidth: null },
  { label: '创建时间', prop: 'createdAt', minWidth: null },
  { label: '修改时间', prop: 'updatedAt', minWidth: null },
])
/**
 * 获取检索配置参数
 * 返回的对象包含以下属性:
 * @param {string} label - 检索项的标题
 * @param {string} prop - 对应的数据字段
 * @param {string} component - 使用的组件类型 (input, select, date, imgUpload, dateRange, timeRange)
 * @param {string} placeholder - 输入框的占位符（可选）
 */
const searchParams = () => [{ label: '会议室名称', prop: 'roomName', component: 'input', placeholder: '请输入会议室名称' }]

/**
 * 获取添加参数
 * @param {string} label - 添加项的标题
 * @param {string} prop - 对应的数据字段
 * @param {string} required - 是否必填
 * @param {object} rule - 校验规则（可选），若不为 null，则表示该字段需要进行校验
 * @param {function} validator - 校验函数，若校验规则采用自动形式，需要通过validator传入校验函数
 * @param {number} colSpan - 列的跨度（可选）
 * @param {string} component - 使用的组件类型 ('input' | 'input-number' | 'select' | 'switch' | 'textarea' | 'date-picker' | 'time-picker' | 'time-picker' | 'img-upload')
 * @param {string} placeholder - 输入框的占位符（可选）
 */
const addParams = ref<any>([
  { label: '会议室名称', prop: 'roomName', component: 'input', placeholder: '请输入会议室名称', required: true },
  { label: '面积', prop: 'area', colSpan: 12, component: 'input-number', placeholder: '请输入面积' },
  {
    label: '容量',
    prop: 'capacity',
    colSpan: 12,
    component: 'input-number',
    placeholder: '请输入容量',
    rule: { min: 5, max: 11, message: '请输入正确的联系方式', trigger: 'blur' },
  },
  { label: '联系人电话', prop: 'linkman', component: 'input', placeholder: '请输入联系人电话', required: true },
  { label: '位置描述', prop: 'positionDescription', component: 'input', placeholder: '请输入位置描述', required: true },
  { label: '会议室描述', prop: 'description', component: 'textarea', placeholder: '请输入会议室描述' },
  { label: '是否需要审批', prop: 'isApproval', component: 'switch' },
  { label: '是否开放', prop: 'openStatus', component: 'switch' },
])

export { addParams, mockData, searchParams, tableColumns }
